草庐IT

java - 没有 print 语句的代码不执行

全部标签

ruby - 如何在 Chef-repo 中跨 Chef Recipe 共享代码?

我想在ChefRepo中分享一些跨Recipe的方法。我知道在Recipe级别上,我可以将代码放入库目录中的模块中(参见relatedquestion)。我正在寻找的是类似的东西,但在我的Chef存储库中的所有Recipe中都可以找到。我可以想到几个解决方案:创建一个gem,将gem安装为chef运行的一部分。这似乎有点矫枉过正。将文件放在某个文件夹中,然后将该文件夹添加到配方文件中的$LOAD_PATH中。我感觉这不适用于实际部署,因为Chef服务器对repo一无所知。将文件放在某个文件夹中,并将其符号链接(symboliclink)到每本Recipe的库目录中。最后一个选项似乎是最

ruby - 为什么 uniq!如果没有重复则返回 nil

我刚开始使用Ruby,我个人认为以下内容违反了“最小意外原则”。也就是说,引用自thedocumentation,那个独特的!“从self中删除重复元素。如果未进行任何更改(即未找到重复元素),则返回nil。”谁能解释一下,这对我来说似乎完全违反直觉?这意味着不是能够通过附加.uniq来编写下面的一行代码!为了结束第一行,我不得不写以下两行:hooks=IO.read(wt_hooks_impl_file).scan(/wt_rt_00\w{2}/)hooks=hooks.uniq或者我是否遗漏了一些更好的方法?编辑:我明白uniq了!修改其操作数。我希望这里的问题能更好地说明:hoo

ruby - 使用适当的参数转义从 ruby​​ 在后台执行 shell 命令

我必须在后台运行一个命令,但我想对其参数进行适当的转义。system("rakesend_mailssubject='#{params[:subject]}'2>/dev/null1>/dev/null&");如果我写system("rake","send_mails",params[:subject])那么我没有重定向的“位置”和&符号。如果我不这样做,我就没有对subject参数进行转义。我该如何解决? 最佳答案 在Ruby1.9中,尝试Process.spawn:#Spawnanewprocessandruntherakeco

ruby - 有没有一种优雅的方法来测试一个实例方法是否是另一个实例方法的别名?

在单元测试中,我需要测试是否正确定义了alias_method定义的别名方法。我可以简单地对用于其原件的别名使用相同的测试,但我想知道是否有更明确或更有效的解决方案。例如,有没有办法1)取消引用方法别名并返回其原始名称,2)获取并比较某种底层方法标识符或地址,或3)获取并比较方法定义?例如:classMyClassdeffoo#dosomethingendalias_method:bar,:fooenddescribeMyClassdoit"methodbarshouldbeanaliasformethodfoo"dom=MyClass.new#???identity(m.bar).s

ruby - 无||假与假|| ruby 中没有

无||false返回false和false||nil返回nil。有人对此有解释吗? 最佳答案 在Ruby中,一切都是表达式,表达式将返回在其中计算的最后一个值。对于您的两个示例,||表达式左侧的计算结果为假值,因此Ruby然后计算右侧并返回它。 关于ruby-无||假与假||ruby中没有,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/12701869/

ruby - 如果值不为零,有条件地在 Ruby 中执行 block ? (又名 Smalltalk 的 ifNotNilDo :)

在Smalltalk中有方法ifNotNilDo:它是这样使用的:databasegetUserifNotNilDo:[:user|MailsendTo:user]在不是nil的对象上执行block,将对象本身作为参数传递。UndefinedObject类(Smalltalk等同于Ruby的NilClass)中的实现什么也不做。这样,如果获取用户的结果是nil对象,则什么也不会发生。我不知道Ruby有类似的东西,所以我推出了自己的解决方案。它是这样的:classObjectdefnot_nilyield(self)endendclassNilClassdefnot_nil#donoth

ruby - 如何在 ActiveRecord 中执行 LIKE % 查询?

我正在尝试查找一些包含特定字符串的项目。如果我这样做:MyModel.where("descriptionLIKE?",keyword)它将生成一个完全匹配的查询。我想让它生成一个LIKE%keyword%查询。我该怎么做? 最佳答案 like_keyword="%#{keyword}%"MyModel.where("descriptionLIKE?",like_keyword) 关于ruby-如何在ActiveRecord中执行LIKE%查询?,我们在StackOverflow上找到一

Ruby:有没有办法获取类的封闭模块常量?

我正在用Ruby进行一些元编程,我需要在模块内动态生成一个同级类。这样做时,我想在模块上调用const_set,但直到运行时我才知道要调用哪个模块常量。一个例子:给定的类Foo::Bar::BazFoo::Quox::Quack我希望能够调用这样的函数(这里过于简单):defgenerate_fromklassmod=klass.enclosing_module#当使用Baz调用时,我最终想要的是一个定义为的新类Foo::Bar::GeneratedClassName还有嘎嘎,我想要Foo::Quox::GeneratedClassName我知道的唯一方法是拆分klass.name,然

ruby - 执行 gem 时,未知命令

每当我输入gem命令时,例如gem"tilt"或gem"mysql"我收到这个错误:Whileexecutinggem...Unknowncommandtilt当我运行gemlist时,tilt和mysql都出现在列表中,因此它们已安装。事实上,我对列表中的每一项都遇到了这个错误。可能是什么原因造成的? 最佳答案 gem没有骗你,它们不是有效的gem命令。也许您将命令行与Bundler混淆了?例如,添加gem"tilt"到Gemfile并运行bundleinstall将安装tilt。但是Bundler使用它自己的语法,而不是shel

ruby - 如何知道代码在什么环境下运行?

在haml的layout文件中,我想确定我们是否在我们的开发和构建环境中。我们正在使用中间人。我想做这样的事情:-ifenvironment=='development'/DevelopmentCode=javascript_include_tag"Dev.js"我尝试访问Ruby的环境变量,并在config.rb文件中定义自定义变量,但没有成功。 最佳答案 你几乎做对了——你需要检查一个符号而不是一个字符串:-ifenvironment==:development/DevelopmentCode=javascript_includ